The 12 Factor AppをAWSでどうやるか
Menthasに流れてきたけど、これ2018年の古い記事だなsta.icon 1 codebase
codecommit
2 dependencies
https://gyazo.com/ee41a0a720d13e957a7ea07a2af9de0d
cfnはSAMを使うといい
3 config
parameter store
secret manger
4 backing service
https://gyazo.com/47f4ae63610e032da264886b36ed62f9
以下は重要
再試行、タイムアウト、サーキットブレーカー
リトライは遅延とゆらぎを入れると良いらしいsta.icon
rate limit注意
上限緩和するか、デザパタで回避
5 3-stage
code4兄弟
https://gyazo.com/8929e2e7817f8ec19ba55484635784ab
6 process
セッションはバックエンドを使え、スティッキーは使うな言うてる
https://gyazo.com/9ad068a6090c9d5f86de155a7b653056
7 port binding
https://gyazo.com/4702330e393e914ddf4d8e7f4705ef49
ここでは共有メモリやプロセス間通信みたいな密結合的連携を使うな、という文脈
8 parallel
https://gyazo.com/3f32d56e19d278b3d99d4d2513efd636
基本的に水平スケールかつautoscaling
ただしautoscalingはスパイクリクエストには対抗できない
スケールイン時
ログの退避、グレースフルシャットダウン
どうしてもすぐに落とせない場合はライフサイクルフック
9 disposal
https://gyazo.com/50693b85893a1c3207d7da719f569e5a
基本的には以下
killシグナル来たらちゃんと終われるようにしておく
すぐ終われない処理はバッチのキューとかに戻す
10 開発本番一致
頑張ってギャップなくしてね
dynamoやsamなどはモックで動かす
デプロイはコード開発者がやる
11 log as an event stream
https://gyazo.com/e23fd14b9c394b6566f24ab38d5fd82b
https://gyazo.com/166cc99e301feaf7180189b3d583576c
アプリはどこにログに保存するかとかは考えない
とにかく出せばいい
ログをどう扱うかは上のレイヤーの仕事(アプリの仕事ではない)
cloudwatch logsから転送するとあるけど、料金エグくならね?sta.icon
普通は「一部だけcloudwatch logsに転送する」じゃなかったっけ?
12 管理プロセス
https://gyazo.com/cff9c3b42c430f0fa8992f567bc3d5c1
煩雑なセットアッププロセスとかその辺どうするかって話
こうする
なるべくスクリプト化する
デプロイ処理の一部に含めて、普通のタスクの一環として実行する